JavaScript流程控制语句
流程控制语句,用于控制程序的执行流程。主要有两部分类容条件语句和循环语句
一、条件语句
if 语句
if 语句用于在条件满足时执行特定代码块。语法如下:if (condition) { // code to be executed if condition is true }
示例代码:
let age = 18; if (age >= 18) { console.log("你已经成年了"); }
if...else 语句
if...else 语句用于在条件不满足时执行特定代码块。语法如下:if (condition) { // code to be executed if condition is true } else { // code to be executed if condition is false }
示例代码:
// 请输入用户的年龄 var age = Number(prompt('请输入年龄')); // 进行判断 if (age >= 18 && age <= 70) { alert('您的年龄符合标准,可以申领驾照'); } else { alert('您的年龄不符合标准,不能申领驾照'); }
if...else if...else 语句
if...else if...else 语句用于在多个条件下执行不同的代码块。语法如下:if (condition1) { // code to be executed if condition1 is true } else if (condition2) { // code to be executed if neither condition1 nor condition2 is true }
示例代码1:判断成绩
let score = 90; if (score >= 90) { console.log("优秀"); } else if (score >= 80) { console.log("良好"); } else if (score >= 60) { console.log("及格"); } else { console.log("不及格"); }
示例代码2:水仙花数(1个三位数,它的每个数位的数字的立方和等于它本身,比如:153)。
// 要求用户输入一个三位数 var n = Number(prompt('请输入一个三位数')); // 对用户输入的数值,进行合法性的验证 if (!isNaN(n) && 100 <= n && n <= 999) { // 当用户输入的数字是合法 // 数学方法 // 百位 var a = Math.floor(n / 100); // 十位 var b = Math.floor(n / 10) % 10; // 各位 var c = n % 10; // 根据水仙花数的条件进行判断 if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == n) { alert('这个数字是水仙花数'); } else { alert('这个数字不是水仙花数'); } } else { // 输入不合法 alert('您输入的数字不合法的'); }
switch语句
switch语句由多个case分支和一个可选的default分支组成。switch语句的基本语法如下:switch (expression) { case value1: // 执行语句块 1 break; case value2: // 执行语句块 2 break; ... default: // 执行默认语句块 break; }
注意:调用break来跳出switch语句体,如果没有break,后面所有case都被视为匹配
示例代码:输入月份,提示当月天数// 让用户输入年份 var year = Number(prompt('请输入一个年份')); // 让用户输入一个月份 var month = Number(prompt('请输入一个月份')); // 根据月份来分类讨论 switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: alert('这个月有31天'); break; case 4: case 6: case 9: case 11: alert('这个月有30天'); break; case 2: // 根据用户输入的year计算一下当年是不是闰年 if (year % 4 == 0 && year % 100 != 0 || year % 100 == 0 && year % 400 == 0) { // 满足闰年的条件 alert('这个月有29天'); } else { alert('这个月有28天'); } break; default: alert('你输入的月份有误'); }
二、循环语句
while 循环
while 循环用于在条件满足时重复执行特定代码块。语法如下:while (condition) { // code to be executed }
示例代码:
let i = 0; while (i < 5) { console.log(i); i++; }
do...while 循环
do...while 循环用于在条件满足时重复执行特定代码块,但它会先执行一次代码块,再判断条件是否满足。语法如下:do { // code to be executed } while (condition);
示例代码:
let i = 0; do { console.log(i); i++; } while (i < 5);
for 循环
for 循环用于在指定次数内重复执行特定代码块。语法如下:for (initialization; condition; increment) { // code to be executed }
示例代码:
for (let i = 0; i < 5; i++) { console.log(i); }
三、练习1:实现乘法口诀表
for (var i = 1; i <= 9; i++) {
var c = '';
for(var x = 1; x <= i; x++) {
c = c + x + '*' + i + '=' + i * x + ', ';
}
document.write(c);
document.write('<br />');
}
四、练习2:鸡兔同笼问题,有35个头,94条腿,鸡兔各几只
// 方法1:
// 假设小鸡有a只,兔子有b只
for (var a = 0; a <= 35; a++) {
for (var b = 0; b <= 35; b++) {
if (a + b == 35 && 2 * a + 4 * b == 94) {
console.log('小鸡有' + a + '只,兔子有' + b + '只');
}
}
}
// 方法2:
// 假设小鸡有a只,那么兔子有35 - a只
for (var a = 0; a < 35; a++) {
var b = 35 - a;
if (2 * a + 4 * b == 94) {
console.log('小鸡有' + a + '只,兔子有' + b + '只');
}
}
五、练习3:猜数字,随机生成一个2-99的数字,让用户猜测这个数字是几,用户输入自己的猜测后,提示”输入的数字太大“或”输入的数字太小“,不断重复这个过程,直到用户准确猜到这个数字
// 随机一个数字,2~99之间
var answer = parseInt(Math.random() * 98) + 2;
// 此时范围的最小值和最大值,这个数值是用来提示用户的
var min = 1;
var max = 100;
do {
// 询问用户猜测的数字
var n = Number(prompt('请猜测数字' + min + '~' + max));
// 验证用户输入的数字是否在范围内
if (n <= min || n >= max) {
alert('你输入的数字不在范围内');
// 不在区间内,直接放弃这次循环,就开启下一次迭代
continue;
}
// 判断用户输入的数字和answer的关系
if (n > answer) {
alert('你输入的数字太大了');
// 因为用户输入的数字较大,所以可以让此时的最大范围数字变为用户输入的值
max = n;
} else if (n < answer) {
alert('你输入的数字太小了');
// 因为用户输入的数字较小,所以可以让此时的最小范围数字变为用户输入的值
min = n;
}
} while (n != answer);
// 出了do while循环,就说明n和answer相等了,因为只有相等了,才能出循环。
alert('恭喜猜对了!');